package com.ee.chat.common.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ee.chat.common.entity.UserInviteLog;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * Mapper接口
 * </p>
 *
 * @author Shane
 * @since 2019-10-13
 */
public interface UserInviteLogMapper extends BaseMapper<UserInviteLog> {
    /**
     * 获取用户的邀请者信息
     * @Author Shane
     * @Date 2019/11/20 15:53
     * @param
     * @return
     **/
    UserInviteLog selectByUserId(@Param("userId") Integer userId);

    /**
     * 获取用户邀请数量
     * @Author Shane
     * @Date 2019/10/13 23:21
     * @param
     * @return
     */
    int getInviteUserCount(@Param("inviteUserId") Integer inviteUserId);

    /**
     * 获取用户邀请的用户
     * @Author Shane
     * @Date 2019/10/13 23:21
     * @param
     * @return
     */
    IPage<Map<String, Object>> getUserInviteUser(Page page, @Param("inviteUserId") Integer inviteUserId);

    /**
     * 获取邀请明细
     * @Author Shane
     * @Date 2019/10/2814:19
     * @param
     * @return
     **/
    IPage<Map<String, Object>> getInviteUserList(Page page, @Param("inviteUserId") Integer inviteUserId,
                                                 @Param("userId") Integer userId, @Param("type") Integer type,
                                                 @Param("beginTime") Date beginTime, @Param("endTime") Date endTime);

    /**
     * 获取推广用户列表
     * @Author AppiJ
     * @Date 2020/4/2 13:35
     * @param userId 邀请者id
     * @param user   被邀请者id/昵称
     * @param type   推广类型 1-用户推广  2-渠道推广
     * @return
     */
    IPage<Map<String, Object>> queryPromoteUserList(Page page, @Param("userId") Integer userId, @Param("user") String user,
                                                    @Param("type") Integer type, @Param("beginTime") Date beginTime, @Param("endTime") Date endTime);

    /**
     * 获取平台注册用户数据
     * @Author AppiJ
     * @Date 2020/5/13 18:16
     * @param format     月--%Y-%m-%d  年--%Y-%m
     * @param startTime  开始时间
     * @return
     */
    List<Map<String, Object>> queryRegisterStatics(@Param("format") String format, @Param("startTime") String startTime);

    /**
     * 获取通过渠道商注册用户数据
     * @Author AppiJ
     * @Date 2020/5/15 14:27
     * @param userId     渠道用户id
     * @param channelId  渠道id
     * @param format     月--%Y-%m-%d  年--%Y-%m
     * @param startTime  开始时间
     * @return
     */
    List<Map<String, Object>> queryChannelRegisterStatics(@Param("userId") Integer userId, @Param("channelId") Integer channelId,
                                                          @Param("format") String format, @Param("startTime") String startTime);

    /**
     * 获取用户邀请充值数据列表
     * @Author AppiJ
     * @Date 2020/7/8 16:03
     * @param
     * @return
     */
    IPage<Map<String, Object>> getInviteRechargeList(Page page, @Param("inviteUserId") Integer inviteUserId, @Param("nowDate") String nowDate,
                                                     @Param("beginTime") Date beginTime, @Param("endTime") Date endTime);

    /**
     * 获取用户邀请充值转化率
     * @Author AppiJ
     * @Date 2020/11/30 15:32
     * @param
     * @return
     */
    Map<String, Object> getInviteRechargeRate(@Param("inviteId") Integer inviteId, @Param("createTime") String createTime);

    /**
     * 获取用户的邀请者id
     * @Author AppiJ
     * @Date 2021/2/4 22:55
     * @param
     * @return
     */
    Integer getInviteIdByUserId(@Param("userId") Integer userId);
}